package com.keqiang.chart.base

import android.graphics.Canvas
import com.keqiang.chart.animation.Animator
import com.keqiang.chart.impl.axis.Axis

/**
 * 图标接口，定义图表的基础功能
 *
 * @param D 数据类型
 * @author Created by wanggaowan on 2022/10/31 13:39
 */
interface IChart<D> {
    /**
     * 触摸事件处理器,不设置则不处理触摸事件
     */
    val touchHandler: ITouchHandler?

    /**
     * 自定义内容绘制器。执行此绘制器时，所有图表数据都已绘制完成，因此如[Axis.drawRectF]等记录绘制坐标的数据都有效
     */
    val customRender: IRender?

    /**
     * 空数据时内容绘制器
     */
    val emptyDataRender: IEmptyDataRender?

    /**
     * 动画执行器
     */
    val animator: Animator?

    /**
     * 图表数据
     */
    val data: D?

    /**
     * 是否是空数据，返回true则调用[emptyDataRender]绘制图表
     */
    fun isEmptyData(): Boolean

    /**
     * 执行绘制逻辑
     */
    fun draw(canvas: Canvas)
}